CREATE PROCEDURE sp_RepJuiciosAreaProcuradorMateriaInstitucion

-- Parametros

@FechaDesde varchar(30) ,
@FechaHasta varchar(30) ,
@Area int , 
@Procurador int , 
@EstadoProcesal int ,
@Materia int ,
@Tipo int ,
@Asunto int ,
@SeleccionTipoDocumento int ,	-- Litigio / Actividad No-Contenciosa / No Corresponde a PGR
@InstitucionInvolucrada int

AS

DECLARE
@Expedientes_Netos integer , 
@FechaInicial datetime ,
@FechaFinal datetime  
SET @FechaInicial = CONVERT( DATETIME , LEFT( @FechaDesde , 10 ) + ' 00:00:00' , 121 ) 
SET @FechaFinal   = CONVERT( DATETIME , LEFT( @FechaHasta , 10 ) + ' 23:59:00' , 121 ) 

SELECT	x.procurador , 
	v.nombre_procurador , 
	e.expediente , 
	x.materiatipoasunto , 
	m.nombre AS Materia_Nombre , 
	x.estadoprocesal , 
	t.nombre AS EstProc_Nombre , 
	Parte = CASE
		WHEN LEN( COALESCE( e.Promovente , '' ) ) = 0 AND LEN( COALESCE( e.Parte , '' ) ) = 0 THEN ''
		WHEN LEN( COALESCE( e.Promovente , '' ) ) = 0 AND LEN( COALESCE( e.Parte , '' ) ) > 0 THEN E.Parte
		WHEN LEN( COALESCE( e.Promovente , '' ) ) > 0 AND LEN( COALESCE( e.Parte , '' ) ) = 0 THEN E.Promovente
		ELSE e.Promovente + ' CONTRA ' + e.Parte
		END , 
	i.Nombre AS Institucion_Nombre 
INTO	#Tabla 
FROM 	expediente AS e 
	INNER JOIN procuradores_x_expediente AS x 
		ON e.expediente=x.expediente AND x.primario_chk='1' 
	INNER JOIN View_Nombre_Procuradores AS v
		ON x.procurador = v.procurador 
	INNER JOIN estadoprocesal AS t 
		ON t.estadoprocesal = x.estadoprocesal --AND t.nombre NOT LIKE '%Fenecido%' 
	INNER JOIN materiatipoasunto AS m 
		ON m.materiatipoasunto = x.materiatipoasunto 
	LEFT OUTER JOIN Instituciones_X_Expediente AS k 
		ON e.expediente = k.expediente 
	LEFT OUTER JOIN InstitucionInvolucrada AS i 
		ON k.InstitucionInvolucrada = i.InstitucionInvolucrada 

WHERE 	fecha_ing_pgr BETWEEN @FechaInicial AND @FechaFinal
	AND x.Activo_Cerrado = 1 -- Activo
	AND x.area = CASE @Area
			WHEN -1 then x.area 
			ELSE @Area
			END
	AND x.Procurador = CASE @Procurador
			WHEN -1 then x.Procurador 
			ELSE @Procurador
			END
	AND x.EstadoProcesal = CASE @EstadoProcesal
				WHEN -1 then x.EstadoProcesal 
				ELSE @EstadoProcesal
				END
	AND (x.MateriaTipoAsunto / 10000) =
			CASE @Materia
				WHEN -1 then (x.MateriaTipoAsunto / 10000) 
				ELSE @Materia
				END
	AND (x.MateriaTipoAsunto % 10000) / 100 =
			CASE @Tipo
				WHEN -1 then (x.MateriaTipoAsunto % 10000) / 100 
				ELSE @Tipo
				END
	AND (x.MateriaTipoAsunto % 100) = 
			CASE @Asunto
				WHEN -1 then (x.MateriaTipoAsunto % 100) 
				ELSE @Asunto
				END
	AND e.Tipo_Expediente =	CASE @SeleccionTipoDocumento
				WHEN -1 then e.Tipo_Expediente
				ELSE @SeleccionTipoDocumento
				END
	AND k.InstitucionInvolucrada = CASE @InstitucionInvolucrada
					WHEN -1 then k.InstitucionInvolucrada
					ELSE @InstitucionInvolucrada
					END
ORDER BY Nombre_Procurador , 
	Parte ,
	Institucion_Nombre

SET @Expedientes_Netos = ( SELECT COUNT( DISTINCT Expediente ) FROM #Tabla )

SELECT	procurador , 
	nombre_procurador , 
	expediente , 
	materiatipoasunto , 
	Materia_Nombre , 
	estadoprocesal , 
	EstProc_Nombre , 
	Parte , 
	Institucion_Nombre , 
	@Expedientes_Netos AS Expedientes_Netos
FROM	#Tabla 

DROP TABLE #Tabla
